package conjunto;
import interfaz.ApartamenEnMora;
import interfaz.ApartamentosDes;
import interfaz.BuscarOElimPer;
//import interfaz.IngresoMascota;
import interfaz.IngresoPersona;
//import interfaz.IngresoVeh;
import interfaz.InterfazCondominio;
//import interfaz.VentanaPropiArrend;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.SwingConstants;

import javax.swing.WindowConstants;
import javax.swing.border.BevelBorder;
import javax.swing.border.LineBorder;
import javax.swing.SwingUtilities;




public class LasPalmasPrin extends javax.swing.JDialog implements ActionListener
{
	private Apartamento bloques[][][]=new Apartamento[6][5][4];
	private ApartamenEnMora ventanaEnMora;
	private ApartamentosDes interfazApartaDes;
	private InterfazCondominio interfazRegistrar;
	private BuscarOElimPer buscarPer;
	private JMenuBar jMenuBar;
	private JMenu jMenu1;
	private JLabel jLTituloPrincipal;
	private JMenu jMenu2Consultas;
	private JMenuItem jMenuItemNuevoHab;
	private JLabel jLImagen;
	private JMenuItem jMenuItemAptoEnMora;
	private JMenu jMenuEstaDeCuenta;
	private JMenuItem jMenuItemApDesoc;
	private JMenuItem jMenuItemPropietArrend;
	private JMenuItem jMenuItemPorNomb;
 
	
	 

	/**
	* Auto-generated main method to display this JFrame
	*/
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				LasPalmasPrin inst = new LasPalmasPrin();
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
			}
		});
		
	}
	
	public LasPalmasPrin() {
		super();
		
		initGUI();
	}
	
	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			getContentPane().setLayout(null);
			getContentPane().setBackground(new java.awt.Color(255,255,255));
			{
				jLTituloPrincipal = new JLabel();
				getContentPane().add(jLTituloPrincipal);
				jLTituloPrincipal.setText("CONJUNTO RESIDENCIAL LAS PALMAS");
				jLTituloPrincipal.setBounds(62, 18, 469, 80);
				jLTituloPrincipal.setFont(new Font("Lucida Handwriting",1,20));
				jLTituloPrincipal.setHorizontalAlignment(SwingConstants.CENTER);
				
			}
			{
				jLImagen = new JLabel();
				getContentPane().add(jLImagen);
				jLImagen.setIcon(new ImageIcon(getClass().getClassLoader().getResource("conjunto/conjuntoPrinc.jpg")));
				jLImagen.setBounds(0, 0, 595, 399);
			}
			{
				jMenuBar = new JMenuBar();
				setJMenuBar(jMenuBar);
				{
					jMenu1 = new JMenu();
					jMenuBar.add(jMenu1);
					jMenu1.setText("Registro");
					jMenu1.setFont(new Font("Arial",0,16));
					jMenu1.setBorder(new LineBorder(new java.awt.Color(0,0,0), 1, false));
					jMenu1.setBackground(new java.awt.Color(0,128,255));
					{
						jMenuItemNuevoHab = new JMenuItem();
						jMenu1.add(jMenuItemNuevoHab);
						jMenuItemNuevoHab.setText("Nuevo Habitante");
						jMenuItemNuevoHab.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								jMenuItemNuevoHabActionPerformed(evt);
							}
						});
					}
				}
				{
					jMenu2Consultas = new JMenu();
					jMenuBar.add(jMenu2Consultas);
					jMenu2Consultas.setText("Consultas");
					jMenu2Consultas.setFont(new Font("Arial",0,16));
					jMenu2Consultas.setBorder(new LineBorder(new java.awt.Color(0,0,0), 1, false));
					{
						jMenuItemPropietArrend = new JMenuItem();
						jMenu2Consultas.add(jMenuItemPropietArrend);
						jMenuItemPropietArrend.setText("Propietarios/Arrendatarios");
						//jMenuItemPropietArrend.addActionListener(new ActionListener() {
						//	public void actionPerformed(ActionEvent evt) {
						//		jMenuItemPropietArrendActionPerformed(evt);
						//	}
						//});
					}
					{
						jMenuItemPorNomb = new JMenuItem();
						jMenu2Consultas.add(jMenuItemPorNomb);
						jMenuItemPorNomb.setText("Por Nombre");
						jMenuItemPorNomb.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								jMenuItemPorNombActionPerformed(evt);
							}
						});
					}
					{
						jMenuItemApDesoc = new JMenuItem();
						jMenu2Consultas.add(jMenuItemApDesoc);
						jMenuItemApDesoc.setText("Apartamentos desocupados");
						jMenuItemApDesoc.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								jMenuItemApDesocActionPerformed(evt);
							}
						});
					}
					{
						jMenuItemAptoEnMora = new JMenuItem();
						jMenu2Consultas.add(jMenuItemAptoEnMora);
						jMenuItemAptoEnMora.setText("Apartamentos en mora");
						jMenuItemAptoEnMora.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								jMenuItemAptoEnMoraActionPerformed(evt);
							}
						});
					}
				}
				{
					jMenuEstaDeCuenta = new JMenu();
					jMenuBar.add(jMenuEstaDeCuenta);
					jMenuEstaDeCuenta.setText("Estado de cuenta");
					jMenuEstaDeCuenta.setFont(new Font("Arial",0,16));
					jMenuEstaDeCuenta.setBorder(new LineBorder(new java.awt.Color(0,0,0), 1, false));
				}
			}
			pack();
			this.setSize(611, 462);
		} catch (Exception e) {
		    //add your error handling code here
			e.printStackTrace();
		}
			
	}
	
	
	/**
	 * Metodo que busca los apartamentos desacupados
	 * @return lista con los apartamentos deshabitados NULL
	 */
	public ArrayList<Integer> mostrarApartamentosDesocupados()
	{

	ArrayList<Integer> aptosDesocupados=new ArrayList<Integer>();

	for(int bl=0;bl<bloques.length;bl++)
		for(int piso=0;piso<bloques[0].length;piso++)
			for(int apto=0;apto<bloques[0][0].length;apto++) // Recorrido de todos los apartamentos
			{
				if(bloques[bl][piso][apto].identidicarAptoSinHabitante())
				{
					// ingresa en la lista los numeros de apartamentos null : bloque, piso, apto
				aptosDesocupados.add((bl+1)*100+(piso+1)*10+(apto+1)); 	
				}
			}
	return aptosDesocupados;
	}
	
	/**
	 * Busca cada arrelo de habitantes y toda la matriz de apartamentos el nombre indicado 
	 * @param nombre contiene el nombre del habitante a buscar
	 * @return lista de apartamentos donde se encuentra el habitante
	 */

	public ArrayList<Integer> buscarHabitantePorNopmbre(String nombre)
	{
	ArrayList<Integer> aptosEncontrados=new ArrayList<Integer>();
	ArrayList<Habitante> ListaHabitantes=new ArrayList<Habitante>();


	for(int bl=0;bl<bloques.length;bl++)
		for(int piso=0;piso<bloques[0].length;piso++)
			for(int apto=0;apto<bloques[0][0].length;apto++) // Recorrido de todos los apartamentos
			{//carga el listado de Habitantes pos apartamento
				ListaHabitantes=bloques[bl][piso][apto].getHabitantes();
				for(int l=0;l<ListaHabitantes.size();l++)
				{
					if(ListaHabitantes.get(l).getNombre().equals(nombre))
						aptosEncontrados.add((bl+1)*100+(piso+1)*10+(apto+1)); // ingresa en la lista los numeros de apartamentos : bloque, piso, apto 	
				}
			}
	return aptosEncontrados;
	}
	
	/**
	 * METODO QUE CREA UN APARTAMENTO
	 * @param apartamento contiene los atributos tipo Apartamento
	 * @param bloque donde ingresara el apartamento
	 * @param piso donde ingresara el apartamento
	 * @param apto donde ingresara el apartamento
	 */
	
	public void crearApartamento(Apartamento apartamento, int bloque, int piso, int apto)
	{
	bloques[bloque-1][piso-1][apto-1]=apartamento;	
	}

	
	/**
	 * revisa si un apartamento en especifico esta desocupado
	 * @param bl numero del bloque
	 * @param piso numero de piso
	 * @param apto numero de apto
	 * @return true si esta desocupado y falso si esta ocupado
	 */
	public boolean revisarAptoSiEstaDesocupado(int bl, int piso, int apto){
	if(bloques[bl-1][piso-1][apto-1]==null)
	{
		return true;
	}
	return false;
	}
	
	
	private void jMenuItemPorNombActionPerformed(ActionEvent evt) 
	{
		
		
		buscarPer=new BuscarOElimPer();
		buscarPer.setVisible(true);
		
		
	}
	
	private void jMenuItemNuevoHabActionPerformed(ActionEvent evt)
	{
		
		
		interfazRegistrar=new InterfazCondominio(new javax.swing.JDialog(),true);
		interfazRegistrar.setVisible(true);
		
		
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		
		
	}
	
	//private void jMenuItemPropietArrendActionPerformed(ActionEvent evt)
	//{
	//	ventanaProp=new VentanaPropiArrend();
	//	ventanaProp.setVisible(true);
	//	
	//}
	
	private void jMenuItemApDesocActionPerformed(ActionEvent evt) 
	{
		interfazApartaDes=new ApartamentosDes(new javax.swing.JDialog(), true);
		interfazApartaDes.setVisible(true);
		
	}
	
	private void jMenuItemAptoEnMoraActionPerformed(ActionEvent evt) 
	{
		ventanaEnMora=new ApartamenEnMora(new javax.swing.JDialog(), true);
		ventanaEnMora.setVisible(true);
		
	}

}
